1. Field of the Invention
This invention relates to graphics systems and, more particularly, to graphics systems capable of supporting multiple display streams or channels.
2. Description of the Related Art
A computer system typically relies upon its graphics system for producing visual output on the computer screen or display device. Early graphics systems were only responsible for taking what the processor produced as output and displaying it on the screen. In essence, they acted as simple translators or interfaces. Modern graphics systems, however, incorporate graphics processors with a great deal of processing power. They now act more like coprocessors rather than simple translators. This change is due to the recent increase in both the complexity and amount of data being sent to the display device. For example, modern computer displays have many more pixels, greater color depth, and are able to display more complex images with higher refresh rates than earlier models. Similarly, the images displayed are now more complex and may involve advanced techniques such as anti-aliasing and texture mapping.
As a result, without considerable processing power in the graphics system, the CPU would spend a great deal of time performing graphics calculations. This could rob the computer system of the processing power needed for performing other tasks associated with program execution and thereby dramatically reduce overall system performance. With a powerful graphics system, however, when the CPU is instructed to draw a box on the screen, the CPU is freed from having to compute the position and color of each pixel. Instead, the CPU may send a request to the video card stating,xe2x80x9cdraw a box at these coordinates.xe2x80x9d The graphics system then draws the box, freeing the processor to perform other tasks.
Generally, a graphics system in a computer is a type of video adapter that contains its own processor to boost performance levels. These processors are specialized for computing graphical transformations, so they tend to achieve better results than the general-purpose CPU used by the computer system. In addition, they free up the computer""s CPU to execute other commands while the graphics system is handling graphics computations. The popularity of graphics applications, and especially multimedia applications, has made high performance graphics systems a common feature in many new computer systems. Most computer manufacturers now bundle a high performance graphics system with their computing systems.
In many applications, it may be useful to have two monitors or displays connected to the same computer system. For example, in some graphical editing applications, it is desirable to use one monitor to show a close-up of an area being edited, while another monitor shows a wider field of view of the object or picture being edited. Alternately, some users may configure one monitor to display the object being edited and the other monitor to display various palettes or editing options that can be used while editing. Another situation where multiple displays are useful occurs when several users are connected to a single computer. In such a situation, it may be desirable for each user to have their own display. In another situation, it may simply be desirable to have multiple displays that each display a different portion of an image in order to provide a larger display than would otherwise be possible. Another example is stereo goggles, which present different images to their wearer""s left and right eyes in order to create a stereo viewing effect. These examples illustrate just a few of the many situations where it is useful to have multiple displays connected to the same computer system.
Given the complexity and expense of many graphics systems, it may be desirable to provide a graphics system that can support two displays without duplicating the entire graphics system. Thus, there is a need to be able to share portions of a graphics system between multiple display channels.
Various embodiments of a graphics system that supports multiple display channels and a method that may be used to share a graphics system between multiple display channels are disclosed. In one embodiment, a graphics system including a frame buffer, a first arbiter, a pixel buffer, a pixel request arbiter, and several display output queues is disclosed. The first arbiter arbitrates between the display channels"" requests for display information (e.g., pixels or samples) from the frame buffer and selects a request to forward to the frame buffer. The frame buffer is configured to output display information in response to receiving the selected request for display information. The pixel buffer is configured to receive pixels corresponding to the display information output by the frame buffer. Each display channel may have a corresponding display output queue that is configured to provide data to a display and to generate a request for pixels from the pixel buffer. A pixel request arbiter is configured to receive the pixel requests generated by the display output queues, to select one of the pixel requests, and to forward the selected request to the pixel buffer. In response to receiving the selected request, the pixel buffer may output one or more pixels to the display output queue that generated the selected pixel request.
In some embodiments, the graphics system may include a descrambler configured to descramble the display information output by the frame buffer. For example, the descrambler may arrange pixels output by frame buffer in raster order and output the arranged pixels to the pixel buffer. The graphics system may also include a pixel processing pipeline configured to process the pixels output by the pixel buffer using at least one of: a window lookup table (WLUT), a gamma correction lookup table (GLUT), one or more indexed color maps (CLUTS), and a current cursor location.
The pixel buffer may include a pixel queue for each display channel. The first arbiter may be configured to select one of the first requests by comparing levels of pixels within each channel""s pixel queue in the pixel buffer. For example, if a first channel""s pixel queue level is below a threshold and a second channel""s pixel queue level is above the threshold, the first arbiter may select the first channel""s request. Alternately, if none of the channels"" pixel queue levels are below the threshold, none of the channels"" requests may be selected. If both (a) the first channel""s and the second channel""s pixel queue levels are below the threshold and (b) the first channel""s deficit (e.g., difference between the threshold pixel queue level and actual queue level) is larger that the second channel""s deficit, then the first channel""s request may be selected. The first arbiter may also be configured to instruct the frame buffer as to which display channel corresponds to the selected request.
The graphics system may include a plurality of first requesters that each correspond to one of the display channels and that are each configured to assert first requests for their corresponding display channels. For example, each first requester may be configured to assert first requests during the time period beginning just before the end of a first vertical blanking interval and ending just before the beginning of the next vertical blanking interval for its corresponding display channel.
The graphics system of claim may also include a plurality of pixel requesters that each correspond to one of the display channels and that are each configured to assert pixel requests for their corresponding display channels. For example, each pixel requester may be configured to assert pixel requests when the level of the display output queue for its corresponding display channel drops below a certain threshold.
In some embodiments, the pixel request arbiter may be configured to select one of the pixel requests by determining which channel was least recently serviced, and if data for that channel is available in the pixel buffer, selecting that channel""s pixel request. If data for the least recently serviced channel is not available in the pixel buffer and data for the next least recently serviced channel is available in the pixel buffer, the pixel request arbiter may select the pixel request corresponding to the next least recently serviced channel.
In some embodiments, the graphics system may support multiple CRT monitors, digital displays, gas-plasma displays, television monitors, or combinations of these or other displays.
In one embodiment, a method of sharing graphics systems resources between a plurality of display channels is disclosed. The method includes: asserting a plurality of first requests for display information (e.g., pixels or samples), wherein each first request corresponds to one of the display channels; arbitrating between the first requests by selecting and forwarding one of the first requests; outputting display information in response to the selected request being forwarded; asserting a plurality of second requests for pixels, wherein each second request corresponds to one of the display channels; arbitrating between the second requests by selecting and forwarding one of the second requests; and outputting a one or more pixels in response to the selected second request being forwarded.
In another embodiment, a graphics system is disclosed. The graphics system includes a plurality of display information requesters that each correspond to one of a plurality of display channels and are each configured to output a request in response to an indication of the corresponding display channel""s actual display information needs. In some embodiments, the indication of the corresponding display channel""s needs may be the current level of data in a buffer or queue for the display channel or the status of the display channel (e.g., whether the channel is about to begin or end a vertical blanking interval). The graphics system also includes a display information buffer configured to store display information and to output a portion of the display information to one of the display channels in response to receiving a selected request corresponding to one of the display channels. The system includes arbitration logic configured to receive requests from the display information requesters, to select one of the requests, and to forward the selected request to the display information buffer.